#ifndef DOPPLERGROUPTAB_H
#define DOPPLERGROUPTAB_H

#include <QWidget>
#include <process/ParameterProcess.h>
class QToolBox ;
class DopplerConfigure ;
namespace Ui {
    class DopplerGroupTab;
}

class DopplerGroupTab : public QWidget
{
    Q_OBJECT

public:
    explicit DopplerGroupTab(QWidget *parent = 0);
    ~DopplerGroupTab();
    void SetGroupId(int nGroupId_) ;
    QToolBox* GetToolBox() const ;
protected:
    void InitConfig();
    void UpdateGroupConfig (int nGroupId_) ;
    void UpdateVelocitySelection(int nGroupId_) ;
    void InitComBoxMaterialSelection(int nGroupId_) ;
    void UpdateProbeConfig(int nGroupId_ , int bIsRx_) ;
    void UpdateWedgeConfig(int nGroupId_ , int bIsRx_) ;
    void UpdateLawConfig(int nGroupId_);

    int  m_nGroupId;
    DopplerConfigure* m_pConfig ;

private slots:
    void slotGainValueChange(double) ;
    void slotSampleStartChange(double);
    void slotSampleRangeChange(double);
    void slotVelocityChange(double);
    void slotVelocityReselect(int nValue_);
    void slotWedgeDelayChanged(double fValue_);
    void slotPulserStartChanged(int nValue_);
    void slotReceiverStartChanged(int nValue_);
    void slotFilterChange(int nValue_);
    void slotRectifyChange(int nValue_);
    void slotVideoFilterOn(bool bValue_);
    void slotPointQtyChange(int nValue_);
    void slotSumGainChange(double fValue_);
    void slotAverageChange(int nValue_);
    void slotGroupModeChange(int nValue_);
    void slotProbeSelectBtnClickedTX();
    void slotWedgeSelecBtnClickedTX();
    void slotProbeSelectBtnClickedRX();
    void slotWedgeSelectBtnClickedRX();
    void slotLawTypeChange(int nValue_);
    void slotAngleTypeChange(int nValue_);
    void slotPriSteeringAngleStartChange(double fValue_);
    void slotPriSteeringAngleStopChange(double fValue_);
    void slotPriSteeringAngleStepChange(double fValue_);
    void slotSecSteeringAngleStopChange(double fValue_);
    void slotSecSteeringAngleStepChange(double fValue_);
    void slotSecSteeringAngleStartChange(double fValue_);
    void slotRefractAngleStartChange(double fValue_);
    void slotRefractAngleStopChange(double fValue_);
    void slotRefractAngleStepChange(double fValue_);
    void slotSkewAngleStartChange(double fValue_);
    void slotSkewAngleStopChange(double fValue_);
    void slotSkewAngleStepChange(double fValue_);
    void slotFocalTypeChange(int nValue_);
    void slotFocusPositionStartChange(double fValue_);
    void slotFocusPositionStopChange(double fValue_);
    void slotFocusPositionStepChange(double fValue_);
    void slotFocusOffsetStart(double fValue_);
    void slotFocusOffsetStop(double fValue_);
    void slotFocusDepthStart(double fValue_);
    void slotFocusDepthStop(double fValue_);
    void slotElementSelectedQty(int nValue_);
    void slotElementSelectedStart(int nValue_);
    void slotElementSelectedStop(int nValue_);
    void slotElementSelectedStep(int nValue_);
    void slotElementSelectedQtySec(int nValue_);
    void slotElementSelectedStartSec(int nValue_);
    void slotElementSelectedStopSec(int nValue_);
    void slotElementSelectedStepSec(int nValue_);
    void slotCurrentGateChange(int nValue_);
    void slotGateStartChange(double fValue_);
    void slotGateWidthChange(double fValue_);
    void slotGateSync(int nValue_);
    void slotGateHeight(int nValue_);
    void slotGateMeasure(int nValue_);
    void slotGeometryChange(int nValue_);
    void slotMaterialSelect(int nValue_);
    void slotGeometrySizeChange1(double fValue_);
    void slotGeometrySizeChange2(double fValue_);
    void slotGeometrySizeChange3(double fValue_);
    void slotGeometryUnified(bool bValue_);
    void slotScanOffsetChange(double fValue_);
    void slotIndexOffsetChange(double fValue_);
    void slotWedgeSkewAngle(int nValue_);
    void slotLoadPartFile();
    void slotShowPartFile(bool bValue_);
    void slotShowMeasureValue(bool bValue_);
    void slotMeasureValueSelect1(int nValue_);
    void slotMeasureValueSelect2(int nValue_);
    void slotMeasureValueSelect3(int nValue_);
    void slotMeasureValueSelect4(int nValue_);
    void slotMeasureValueSelect5(int nValue_);
    void slotCursorShow(bool bValue_);
    void slotCursorARef(double fValue_);
    void slotCursorAMes(double fValue_);
    void slotCursorURef(double fValue_);
    void slotCursorUMes(double fValue_);
    void slotCursorSRef(double fValue_);
    void slotCursorIRef(double fValue_);
    void slotCursorSMes(double fValue_);
    void slotCursorIMes(double fValue_);
signals:
    void signalValueChanged(PARAMETER_NAME) ;
private:
    Ui::DopplerGroupTab *ui;
};

#endif // DOPPLERGROUPTAB_H
